// lib/src/models/customer.dart

/// 代表下游客户的数据模型。
class Customer {
  /// 客户的唯一标识代码。
  /// 例如："NTS-2304"
  final String customerCode;

  /// 客户姓名。
  /// 例如："Ruixin"
  final String customerName;

  /// 客户联系方式。
  /// 例如："+966 551234567"
  final String contactInfo;

  /// 客户所在国家代码。
  /// 例如："SA" (沙特阿拉伯)
  final String countryCode;

  /// 客户的偏好语言代码。
  /// 例如："ar" (阿拉伯语), "en" (英语)
  final String languageCode;

  /// 客户所在时区相对于UTC的小时偏移量。
  /// 例如：+3 (表示UTC+3)
  final int timezoneOffsetHours;

  /// 构造函数，用于创建一个新的客户实例。
  Customer({
    required this.customerCode,
    required this.customerName,
    required this.contactInfo,
    required this.countryCode,
    required this.languageCode,
    required this.timezoneOffsetHours,
  });

  /// 从Map对象创建Customer实例的工厂构造函数。
  /// 这对于从JSON等数据源反序列化非常有用。
  factory Customer.fromMap(Map<String, dynamic> map) {
    return Customer(
      customerCode: map['customerCode'] as String,
      customerName: map['customerName'] as String,
      contactInfo: map['contactInfo'] as String,
      countryCode: map['countryCode'] as String,
      languageCode: map['languageCode'] as String,
      timezoneOffsetHours: map['timezoneOffsetHours'] as int,
    );
  }

  /// 将Customer实例转换为Map对象。
  /// 这对于序列化为JSON等数据格式非常有用。
  Map<String, dynamic> toMap() {
    return {
      'customerCode': customerCode,
      'customerName': customerName,
      'contactInfo': contactInfo,
      'countryCode': countryCode,
      'languageCode': languageCode,
      'timezoneOffsetHours': timezoneOffsetHours,
    };
  }

  /// 重写 toString 方法，方便打印和调试。
  @override
  String toString() {
    return 'Customer(customerCode: $customerCode, customerName: $customerName, contactInfo: $contactInfo, countryCode: $countryCode, languageCode: $languageCode, timezoneOffsetHours: $timezoneOffsetHours)';
  }
}
